#include "key.h"

/*******************************************************************************
* 函数名         : Key_Init
* 功能描述       : 初始化按键引脚
* 输入           : 无
* 输出           : 无
*******************************************************************************/
void Key_Init(void)
{
    // 设置按键引脚为输入模式
    KEY1 = 1;    // 设置为高电平（上拉）
    KEY2 = 1;    // 设置为高电平（上拉）
    KEY3 = 1;    // 设置为高电平（上拉）
    KEY4 = 1;    // 设置为高电平（上拉）
    KEY5 = 1;    // 设置为高电平（上拉）
}

/*******************************************************************************
* 函数名         : Key_Scan
* 功能描述       : 扫描按键状态
* 输入           : 无
* 输出           : 按键值：KEY_NONE, KEY_1, KEY_2, KEY_3
* 说明           : 采用低电平有效的按键检测方式，带有简单的消抖处理
*******************************************************************************/
unsigned char Key_Scan(void)
{
    unsigned char key = KEY_NONE;
    
    // 检测是否有按键按下
    if(KEY1 == 0 || KEY2 == 0 || KEY3 == 0 ||  KEY4 == 0 || KEY5 == 0)
    {
        // 延时消抖
        delay_ms(5);
        
        // 再次检测按键状态
        if(KEY1 == 0)
            key = KEY_1;
        else if(KEY2 == 0)
            key = KEY_2;
        else if(KEY3 == 0)
            key = KEY_3;
        else if(KEY4 == 0)
            key = KEY_4;
        else if(KEY5 == 0)
            key = KEY_5;
        
        // 等待按键释放
        while(KEY1 == 0 || KEY2 == 0 || KEY3 == 0 || KEY4 == 0 || KEY5 == 0);
        
        // 延时消抖
        delay_ms(5);
    }
    
    return key;
}